package com.hsp.innerClass;

/*
演示匿名内部类的使用
 */
public class AnonymousInnerClass {
    public static void main(String[] args) {
        Outer04 outer04 = new Outer04();
        outer04.method();
    }
}

class Outer04{//外部类

    private int n1 = 10;
    public void method(){//方法
        //基于接口的匿名内部类
        //1. 需求：想使用接口IA,并创建对象
        //2，传统方式，写一个类，实现该接口并创建一个对象
        //3. 需求是某个类值使用一次就不再使用
        //4. 可以使用匿名内部类
        //5. tiger 的编译类型是 IA
        //6. tiger 的运行类型  就是匿名内部类
        /*

         */
        IA tiger=new IA(){
            @Override
            public void cry() {
                System.out.println("老虎叫唤......");
            }
        };
//        tiger.cry();
//        System.out.println("tiger的匿名名称："+tiger.getClass());//Outer04$1

        //演示基于类的匿名内部类
        //1 father编译类型 Father
        //2. father运行类型 Outer04$2
        Father father=new Father("jack"){
            @Override
            public void test() {
                System.out.println("匿名内部类重写test方法");
            }
        };
        System.out.println("father对象的运行类型"+father.getClass());
        father.test();
    }
}

interface IA{
    public void cry();
}

class Father{
    public Father(String name) {
    }
    public void test(){
    }
}